package com.android.rdc.librarysystem.API.net;


import com.android.rdc.librarysystem.API.response.BaseResponse;
import com.android.rdc.librarysystem.bean.Book;
import com.android.rdc.librarysystem.bean.Rank;

import java.util.List;

import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.POST;

/**
 * 2020/6/7 18:21
 * author: red
 * desc: 这里是网络通信的接口，通信的方式都是HTTP的请求，通过POST方式发送到服务端
 */
public interface ApiService {
    //借书记录，借书登记
    @POST("/api/book/borrow")  //@POST方法，括号里的是请求的地址
    //@Body 里是HTTP请求的参数，是转化成JSON格式
    //Observable<BaseResponse<Book>> 是一个观察者模式，因为网络通信是请求-》返回的过程，所以通过观察者模式，
    //就可以让代码在得到返回的时候进行特定的操作。
    //返回值是BaseResponse<Book>  这个接口里返回值没什么用
    Observable<BaseResponse<Book>> borrow(@Body Book book);

    //获取借书排行榜数据
    @POST("/api/book/rank")
    //返回值是BaseResponse<List<Rank>>  这个接口里返回值主要是List<Rank> ，是一个排名的列表
    //BaseResponse 是一个结果的封装类，因为HTTP除去返回的数据之外，还有一些返回状态码之类的需要封装
    Observable<BaseResponse<List<Rank>>> rank();
}
